package com.zhiyou100.poi;

import lombok.SneakyThrows;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

import java.io.FileInputStream;
import java.text.SimpleDateFormat;

/**
 * 读取 Excel
 *
 * @author yang
 * @version 1.0.0
 * @date 2020-09-14 11:29
 */
public class Test02ReadExcel {
    @SneakyThrows
    public static void main(String[] args) {
        final FileInputStream fileInputStream = new FileInputStream("/Users/yang/Documents/git/java/oracle/src/main/resources/excel/student01.xls");
        // 创建 HSSFWorkbook 对象，关联愿望呢教案对应的输入流
        final HSSFWorkbook book = new HSSFWorkbook(fileInputStream);
        // 获取所有工作表
        final int numberOfSheets = book.getNumberOfSheets();
        System.out.println("工作表的个数 ： " + numberOfSheets);
        for (int i = 0; i < numberOfSheets; i++) {
            // 根据下标获取一个工作表
            final HSSFSheet sheet = book.getSheetAt(i);

            //  sheet 实现了 Iterator 接口，可以 直接 foreach
            // 获取所有的行
            for (Row cells : sheet) {

                //  Row 实现了 Iterator 接口，可以 直接 foreach
                // 遍历一行的所有单元格
                for (Cell cell : cells) {
                    // boolean 类型
                    if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
                        final boolean booleanCellValue = cell.getBooleanCellValue();
                        System.out.println("布尔类型 " + booleanCellValue);
                    }
                    // 字符串
                    if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
                        final String booleanCellValue = cell.getStringCellValue();
                        System.out.println("字符串类型 " + booleanCellValue);
                    }
                    // 数字和日期
                    if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
                        //  判断是不是日期
                        if (HSSFDateUtil.isCellDateFormatted(cell)) {
                            SimpleDateFormat sdf = null;
                            if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm:ss")) {
                                sdf = new SimpleDateFormat("HH:mm:ss");
                            } else if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("yyyy-MM-dd HH:mm:ss")) {
                                sdf = new SimpleDateFormat("yyy-MM-dd");
                            }

                        }

                    }
                }
            }
        }


        book.close();
        fileInputStream.close();

    }
}
